common.skill

বাইন্ডিং এবং ভ্যালিডেশন (Model Binding and Validation)

Microsoft Technologies - এএসপি ডট নেট কোর (ASP.Net Core)
227
227

ASP.NET Core-এ Model Binding এবং Model Validation দুটি গুরুত্বপূর্ণ প্রক্রিয়া, যা ইউজার ইনপুট এবং ডেটার সাথে কাজ করার ক্ষেত্রে সহায়ক। এগুলি ওয়েব অ্যাপ্লিকেশনের ডেটা গ্রহণ, প্রক্রিয়াকরণ এবং যাচাইয়ের জন্য ব্যবহৃত হয়। Model Binding ইউজার থেকে প্রাপ্ত ডেটা সঠিকভাবে কন্ট্রোলার অ্যাকশনে প্রেরণ করে, আর Model Validation ডেটার সঠিকতা যাচাই করে।


Model Binding (মডেল বাইন্ডিং)

Model Binding হলো ASP.NET Core এর একটি প্রক্রিয়া যা HTTP রিকোয়েস্টের ডেটাকে C# অবজেক্টে রূপান্তরিত করে। এটি URL প্যারামিটার, ফর্ম ডেটা, কুয়্যারি স্ট্রিং, অথবা JSON পে লোড থেকে ডেটা গ্রহণ করে এবং সেই ডেটা কন্ট্রোলার বা অ্যাকশনের প্যারামিটার বা মডেল অবজেক্টে মেলিয়ে দেয়।

Model Binding এর প্রক্রিয়া

  1. ইউজার ইনপুট: ইউজার যখন ফর্মে কিছু ইনপুট প্রদান করে বা URL তে প্যারামিটার পাঠায়, তখন তা HTTP রিকোয়েস্টে পরিণত হয়।
  2. HTTP রিকোয়েস্ট প্রসেসিং: ASP.NET Core HTTP রিকোয়েস্টের ডেটা অ্যাপ্লিকেশন মডেলে (যেমন: C# ক্লাস) বাইন্ড করে।
  3. ডেটা অ্যাকশন মেথডে পাস করা: মডেল বাইন্ডিংয়ের মাধ্যমে ডেটা কন্ট্রোলারের প্যারামিটার অথবা মডেল অবজেক্টে পাস করা হয়, যেখানে সেগুলো প্রসেস করা হয়।

Model Binding এর উদাহরণ

ধরা যাক, আমাদের একটি ব্লগ অ্যাপ্লিকেশন রয়েছে, যেখানে ইউজার একটি পোস্ট তৈরি করতে চান।

Controller:

public class PostController : Controller
{
    [HttpPost]
    public IActionResult CreatePost(BlogPost post)
    {
        if (ModelState.IsValid)
        {
            // Save the post to database
            return RedirectToAction("Index");
        }
        return View(post);
    }
}

Model:

public class BlogPost
{
    public int Id { get; set; }
    public string Title { get; set; }
    
    [Required]
    public string Content { get; set; }
}

View:

<form asp-action="CreatePost" method="post">
    <label for="Title">Title</label>
    <input type="text" id="Title" name="Title" />
    
    <label for="Content">Content</label>
    <textarea id="Content" name="Content"></textarea>
    
    <button type="submit">Create Post</button>
</form>

এখানে Model Binding ফর্মের ইনপুট ডেটা (Title এবং Content) স্বয়ংক্রিয়ভাবে BlogPost মডেলে বাইন্ড হবে এবং তারপর CreatePost অ্যাকশন মেথডে পাঠানো হবে।


Model Validation (মডেল ভ্যালিডেশন)

Model Validation হলো ডেটা যাচাই করার প্রক্রিয়া, যা অ্যাপ্লিকেশনের ইউজার ইনপুট বা রিকোয়েস্ট ডেটার সঠিকতা নিশ্চিত করে। এতে ডেটা অ্যানোটেশন (Data Annotations) ব্যবহার করা হয়, যা মডেল প্রপার্টিগুলির উপরে প্রয়োগ করা হয় এবং ইউজারের ইনপুট যাচাই করার জন্য নিয়ম নির্ধারণ করে।

ASP.NET Core-এর মডেল ভ্যালিডেশন সিস্টেমে বিভিন্ন ধরণের ডেটা অ্যানোটেশন অ্যাট্রিবিউট রয়েছে, যেমন Required, StringLength, Range, EmailAddress, ইত্যাদি, যা ইনপুট ফিল্ডের জন্য নিয়ম নির্ধারণ করে।

Model Validation এর উদাহরণ

উপরের BlogPost মডেলটি আমরা ব্যবহার করেছি, যেখানে Content প্রপার্টির জন্য Required অ্যানোটেশন প্রয়োগ করা হয়েছে। এর মানে হলো, যদি ইউজার Content ফিল্ডটি খালি রেখে ফর্ম জমা দেয়, তবে তা বৈধ হবে না এবং অ্যাপ্লিকেশন একটি ত্রুটি প্রদর্শন করবে।

Controller:

public class PostController : Controller
{
    [HttpPost]
    public IActionResult CreatePost(BlogPost post)
    {
        if (ModelState.IsValid)
        {
            // Save the post to database
            return RedirectToAction("Index");
        }
        
        // If model is invalid, return the same view with error messages
        return View(post);
    }
}

এখানে ModelState.IsValid চেক করে দেখানো হয় যে, ইউজারের ইনপুট সঠিক কিনা। যদি ইনপুট সঠিক না হয়, তাহলে View ফেরত দেওয়া হয় এবং ত্রুটির বার্তা প্রদর্শিত হয়।


Model Validation এ কমন ডেটা অ্যানোটেশন অ্যাট্রিবিউট

ASP.NET Core মডেল ভ্যালিডেশনের জন্য কিছু প্রচলিত ডেটা অ্যানোটেশন অ্যাট্রিবিউট রয়েছে:

  • [Required]: ফিল্ডটি খালি রাখা যাবে না।
  • [StringLength]: স্ট্রিংয়ের সর্বোচ্চ এবং সর্বনিম্ন দৈর্ঘ্য নির্ধারণ করে।
  • [Range]: একটি সংখ্যার সীমা নির্ধারণ করে।
  • [EmailAddress]: ইনপুটের একটি বৈধ ইমেল ঠিকানা হতে হবে।
  • [RegularExpression]: একটি নির্দিষ্ট প্যাটার্ন অনুসারে ইনপুট যাচাই করতে ব্যবহৃত হয়।
  • [Compare]: দুটি প্রপার্টি তুলনা করতে ব্যবহৃত হয় (যেমন, পাসওয়ার্ড এবং কনফার্ম পাসওয়ার্ড)।

উদাহরণ:

public class UserRegistration
{
    [Required]
    [StringLength(50, MinimumLength = 5)]
    public string Username { get; set; }

    [Required]
    [EmailAddress]
    public string Email { get; set; }

    [Required]
    [Compare("Password")]
    public string ConfirmPassword { get; set; }
    
    [Required]
    public string Password { get; set; }
}

Client-side এবং Server-side Validation

Server-side validation: ASP.NET Core মডেল ভ্যালিডেশন মূলত সার্ভারে হয়, যেখানে ইনপুট ডেটা যাচাই করা হয় এবং যদি কোনো ত্রুটি থাকে, তাহলে তা ব্যবহারকারীকে জানানো হয়।

Client-side validation: ASP.NET Core jQuery Unobtrusive Validation ব্যবহার করে ক্লায়েন্ট সাইডে ভ্যালিডেশন করতে পারে, যাতে ইনপুট প্রক্রিয়া আরও দ্রুত হয় এবং সার্ভারকে অপ্রয়োজনীয় রিকোয়েস্ট পাঠানোর প্রয়োজন না পড়ে।


Model Binding এবং Validation এর সুবিধা

  • সহজ ডেটা প্রবাহ: Model Binding ডেটা ইন্টারেকশনকে সহজ করে এবং অ্যাকশনের প্যারামিটার বা মডেল অবজেক্টে ইনপুট ফিল্ডের মানগুলি স্বয়ংক্রিয়ভাবে মেলানোর কাজ করে।
  • ভালভালিডেশন: Model Validation ইউজার ইনপুটের সঠিকতা যাচাই করে, এর মাধ্যমে অ্যাপ্লিকেশনে নিরাপত্তা এবং সঠিকতা বজায় রাখা যায়।
  • শুধু সার্ভার সাইড ভ্যালিডেশন নয়, ক্লায়েন্ট সাইডও সমর্থন: Unobtrusive Validation দ্বারা ক্লায়েন্ট সাইডে ভ্যালিডেশন করা যেতে পারে, যা ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে।

ASP.NET Core-এ Model Binding এবং Model Validation হল ডেটা গ্রহণ এবং যাচাইয়ের প্রক্রিয়া যা অ্যাপ্লিকেশনের কার্যকারিতা এবং নিরাপত্তা নিশ্চিত করে। Model Binding সহজভাবে ইউজারের ইনপুট গ্রহণ করে, এবং Model Validation নিশ্চিত করে যে ইনপুটটি সঠিক এবং গ্রহণযোগ্য।

common.content_added_by

Model Binding এর ধারণা

243
243

Model Binding হলো ASP.NET Core-এ একটি শক্তিশালী ফিচার, যা HTTP রিকোয়েস্টের ডেটা (যেমন ফর্ম ডেটা, কুইরি স্ট্রিং, রুট ডেটা, এবং হেডার) থেকে ডেটা নিয়ে অ্যাপ্লিকেশনের অ্যাকশন মেথডে ডিফাইন করা প্যারামিটারে বা মডেলে রূপান্তর করে। এটি ডেভেলপারদের জন্য ডেটা প্রসেসিং সহজ এবং কার্যকর করে তোলে।


Model Binding কীভাবে কাজ করে?

Model Binding স্বয়ংক্রিয়ভাবে নিচের উৎসগুলো থেকে ডেটা পায় এবং সেটিকে মডেলে বা প্যারামিটারে রূপান্তর করে:

  • Form Data: HTML ফর্মের ইনপুট ফিল্ড থেকে পাঠানো ডেটা।
  • Route Data: URL এর রুট টেমপ্লেট থেকে প্রাপ্ত ডেটা।
  • Query String: URL এর কুইরি স্ট্রিং অংশ (যেমন: ?id=10) থেকে ডেটা।
  • Header Values: HTTP রিকোয়েস্ট হেডার থেকে ডেটা।
  • JSON Body: API রিকোয়েস্টের JSON পে-লোড থেকে ডেটা।

Model Binding স্বয়ংক্রিয়ভাবে এই উৎসগুলো থেকে ডেটা পেয়ে উপযুক্ত টাইপে রূপান্তর করে এবং অ্যাকশন মেথডের প্যারামিটার বা মডেলে সেট করে।


Model Binding প্রক্রিয়া

  1. ডেটা উৎস সনাক্তকরণ: Model Binding প্রথমে ডেটা উৎস নির্ধারণ করে (যেমন: ফর্ম ডেটা, রুট ডেটা বা কুইরি স্ট্রিং)।
  2. কী-ম্যাচিং: ডেটার নাম এবং মডেলের প্রপার্টি বা প্যারামিটারের নাম মিলিয়ে দেখে।
  3. টাইপ কনভার্সন: ডেটা প্রয়োজনীয় টাইপে রূপান্তরিত করে।
  4. ভ্যালিডেশন: ডেটা ভ্যালিডেশনের জন্য ডেটা অ্যানোটেশন বা কাস্টম ভ্যালিডেটর ব্যবহার করা হয়।

Model Binding উদাহরণ

সাধারণ উদাহরণ

একটি URL: /Product/Details/10

Controller এবং Action Method:

public IActionResult Details(int id)
{
    // id = 10
    return View();
}

এখানে Model Binding স্বয়ংক্রিয়ভাবে রুট ডেটা থেকে id এর মান ১০ হিসেবে ধরে অ্যাকশন মেথডের প্যারামিটারে সেট করেছে।

মডেল ব্যবহার

HTML ফর্ম ডেটা থেকে মডেল বাইন্ডিংয়ের উদাহরণ:

<form method="post" action="/Product/Create">
    <input type="text" name="Name" />
    <input type="number" name="Price" />
    <button type="submit">Create</button>
</form>

Controller এবং Model:

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
}

[HttpPost]
public IActionResult Create(Product product)
{
    // product.Name এবং product.Price ফর্ম ডেটা থেকে বাউন্ড হবে।
    return View(product);
}

Model Binding স্বয়ংক্রিয়ভাবে ফর্ম থেকে ডেটা নিয়ে Product মডেলের প্রপার্টিতে সেট করে।


Model Binding এর সুবিধা

  • স্বয়ংক্রিয় ডেটা রূপান্তর: HTTP রিকোয়েস্ট থেকে ডেটা সরাসরি মডেল বা প্যারামিটারে রূপান্তর করা হয়।
  • সহজ কোডিং স্টাইল: ডেটা প্রসেসিংয়ের জন্য অতিরিক্ত কোড লেখার প্রয়োজন হয় না।
  • টাইপ সেফটি: ডেটা সঠিক টাইপে রূপান্তরিত হওয়ায় কোডে কম ত্রুটি থাকে।
  • JSON এবং Form Data হ্যান্ডলিং: এটি JSON, Form Data এবং Query String সমর্থন করে।
  • ভ্যালিডেশন ইন্টিগ্রেশন: Model Binding সরাসরি Data Annotations এর মাধ্যমে ডেটা ভ্যালিডেশন সমর্থন করে।

Model Binding এ Data Annotations ব্যবহার

Data Annotations ব্যবহার করে মডেল প্রপার্টিগুলোর জন্য ভ্যালিডেশন রুল নির্ধারণ করা যায়। উদাহরণস্বরূপ:

public class Product
{
    [Required(ErrorMessage = "Name is required.")]
    public string Name { get; set; }

    [Range(1, 1000, ErrorMessage = "Price must be between 1 and 1000.")]
    public decimal Price { get; set; }
}

এটি নিশ্চিত করে যে Name ফিল্ডটি ফাঁকা রাখা যাবে না এবং Price এর মান ১ থেকে ১০০০ এর মধ্যে থাকতে হবে।


Model Binding এর সীমাবদ্ধতা

  • কমপ্লেক্স ডেটা স্ট্রাকচার: খুব জটিল বা নেস্টেড ডেটা স্ট্রাকচারের ক্ষেত্রে Model Binding ব্যর্থ হতে পারে।
  • ডিফল্ট ভ্যালু: ডেটা না পাওয়া গেলে ডিফল্ট মান ব্যবহার করা হয়, যা কখনো কখনো অপ্রত্যাশিত হতে পারে।
  • কাস্টম লজিকের প্রয়োজন: কাস্টম ডেটা প্রসেসিং বা ভ্যালিডেশনের ক্ষেত্রে অতিরিক্ত কাজ করতে হতে পারে।

Model Binding কাস্টমাইজেশন

Model Binding কাস্টমাইজ করার জন্য Custom Model Binder ব্যবহার করা যায়। উদাহরণস্বরূপ:

public class CustomBinder : IModelBinder
{
    public Task BindModelAsync(ModelBindingContext bindingContext)
    {
        var value = bindingContext.ValueProvider.GetValue("customKey").FirstValue;
        bindingContext.Result = ModelBindingResult.Success(value);
        return Task.CompletedTask;
    }
}

উপসংহার

Model Binding ASP.NET Core-এর একটি শক্তিশালী ফিচার যা HTTP রিকোয়েস্ট থেকে ডেটা পেতে এবং সেটিকে অ্যাকশন মেথডের প্যারামিটার বা মডেলে রূপান্তর করতে সাহায্য করে। এটি ডেভেলপারদের কোড কমপ্লেক্সিটি কমিয়ে এবং ডেটা প্রসেসিং সহজ করে অ্যাপ্লিকেশন ডেভেলপমেন্টকে দ্রুততর করে তোলে।

common.content_added_by

Form Data এবং Query String এর মাধ্যমে ডেটা বাইন্ড করা

239
239

ASP.NET Core-এ Model Binding প্রক্রিয়া ব্যবহারকারীর ইনপুট ডেটা (যেমন ফর্ম ডেটা বা URL কুইরি স্ট্রিং) মডেল ক্লাসের প্রপার্টিতে স্বয়ংক্রিয়ভাবে মাপসই করে। Form Data এবং Query String দুটি সাধারণ উপায় যা দিয়ে ডেটা বাইন্ড করা যায়।


Form Data এর মাধ্যমে ডেটা বাইন্ড করা

Form Data সাধারণত HTTP POST রিকোয়েস্টের মাধ্যমে ফর্ম থেকে পাঠানো হয়। ASP.NET Core-এ, Form Data ব্যবহার করে ডেটা মডেল ক্লাসের প্রপার্টিতে বাইন্ড করা হয়, যা মূলত HTML ফর্মের ইনপুট ফিল্ডগুলির সাথে সম্পর্কিত।

উদাহরণ:

ধরা যাক, আপনার একটি User মডেল রয়েছে এবং আপনি একটি ফর্ম থেকে ব্যবহারকারীর নাম এবং ইমেইল সংগ্রহ করতে চান।

Model:

public class User
{
    public string Name { get; set; }
    public string Email { get; set; }
}

View (HTML Form):

<form method="post" asp-action="Submit">
    <div>
        <label for="Name">Name:</label>
        <input type="text" id="Name" name="Name" />
    </div>
    <div>
        <label for="Email">Email:</label>
        <input type="email" id="Email" name="Email" />
    </div>
    <button type="submit">Submit</button>
</form>

Controller:

public class UserController : Controller
{
    [HttpPost]
    public IActionResult Submit(User user)
    {
        if (ModelState.IsValid)
        {
            // Form data থেকে ডেটা বাইন্ডিং করা হয়েছে
            // user.Name এবং user.Email ব্যবহার করা যেতে পারে
            return Content($"Name: {user.Name}, Email: {user.Email}");
        }
        return View();
    }
}

এখানে User মডেলটি ফর্মের ইনপুট ফিল্ডগুলির সাথে বাইন্ড হয়েছে। যখন ফর্মটি সাবমিট করা হবে, ASP.NET Core স্বয়ংক্রিয়ভাবে ইনপুট ডেটাগুলিকে User মডেল ক্লাসে মাপসই করবে।


Query String এর মাধ্যমে ডেটা বাইন্ড করা

Query String HTTP GET রিকোয়েস্টের অংশ হিসেবে URL-এর পরে পাঠানো ডেটা। Query String ডেটা সাধারণত URL-এ কিওয়ারি-পেয়ারের মাধ্যমে থাকে, যেমন ?id=1&name=John। ASP.NET Core-এ, আপনি Query String থেকে ডেটা মডেল ক্লাসে বাইন্ড করতে পারেন।

উদাহরণ:

ধরা যাক, আপনাকে URL থেকে id এবং name গ্রহণ করতে হবে এবং এই ডেটা মডেল ক্লাসে বাইন্ড করতে হবে।

Model:

public class UserQuery
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Controller:

public class UserController : Controller
{
    [HttpGet]
    public IActionResult Search(UserQuery query)
    {
        if (ModelState.IsValid)
        {
            // Query string থেকে ডেটা বাইন্ডিং করা হয়েছে
            return Content($"Id: {query.Id}, Name: {query.Name}");
        }
        return View();
    }
}

এখানে, যখন আপনি URL এ এমন কিছু রিকোয়েস্ট করবেন:

/User/Search?id=1&name=John

ASP.NET Core স্বয়ংক্রিয়ভাবে Query String থেকে id এবং name প্যারামিটারগুলি UserQuery মডেল ক্লাসের প্রপার্টিতে বাইন্ড করবে।


Form Data এবং Query String এর মাধ্যমে ডেটা বাইন্ডিং এর মধ্যে পার্থক্য

বৈশিষ্ট্যForm Data (POST)Query String (GET)
উপস্থিতিHTTP POST রিকোয়েস্টের মধ্যে থাকেURL এর পর Query String অংশে থাকে
ডেটা নিরাপত্তাফর্ম ডেটা নিরাপদ, কারণ এটি URL এর বাইরে থাকেURL-এ থাকা ডেটা সাধারণত দৃশ্যমান থাকে
ডেটা পরিমাণবেশি পরিমাণ ডেটা পাঠানো যেতে পারেসীমিত পরিমাণ ডেটা পাঠানো যায়
ব্যবহারফর্ম সাবমিটের মাধ্যমে ব্যবহার করা হয়URL এর মাধ্যমে ডেটা পাঠানো হয়

সারাংশ

ASP.NET Core-এ Form Data এবং Query String উভয়ই ডেটা বাইন্ডিংয়ের জন্য ব্যবহৃত হয়, তবে তাদের ব্যবহারের ক্ষেত্র আলাদা। Form Data সাধারণত POST রিকোয়েস্টে ব্যবহৃত হয় যেখানে বড় এবং সংবেদনশীল ডেটা পাঠানো যায়, আর Query String সাধারণত GET রিকোয়েস্টে ব্যবহৃত হয় যেখানে ছোট পরিমাণের ডেটা পাঠানো হয় এবং এটি URL-এ দৃশ্যমান থাকে। ASP.NET Core-এ এই ডেটাগুলিকে স্বয়ংক্রিয়ভাবে মডেল ক্লাসে বাইন্ড করা যায়, যার ফলে ডেটা প্রাপ্তি এবং ব্যবহারের প্রক্রিয়া সহজ হয়।

common.content_added_by

ডেটা অ্যানোটেশন ব্যবহার করে Model Validation

251
251

Model Validation হল ASP.NET Core অ্যাপ্লিকেশনের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ব্যবহারকারীর ইনপুট যাচাই করতে সাহায্য করে। ASP.NET Core ডেটা অ্যানোটেশন (Data Annotations) ব্যবহার করে সহজে Model Validation পরিচালনা করতে সক্ষম। ডেটা অ্যানোটেশন হল সেই এট্রিবিউট যা আপনি আপনার Model ক্লাসের প্রপার্টির উপর প্রয়োগ করেন এবং এটি ইনপুট যাচাই করার জন্য ব্যবহৃত হয়, যেমন ফিল্ডের ধরন, ফিল্ডের জন্য প্রয়োজনীয়তা, ম্যাক্সিমাম এবং মিনিমাম মান ইত্যাদি।

ডেটা অ্যানোটেশন ব্যবহারের মাধ্যমে আপনি বিভিন্ন ধরনের ভ্যালিডেশন চেক করতে পারেন, যেমন:

  • Required: ফিল্ডটি অবশ্যই পূর্ণ হতে হবে।
  • StringLength: স্ট্রিংয়ের দৈর্ঘ্য সীমাবদ্ধ করা।
  • Range: একটি সংখ্যা একটি নির্দিষ্ট রেঞ্জের মধ্যে থাকতে হবে।
  • EmailAddress: একটি বৈধ ইমেল ঠিকানা।
  • RegularExpression: একটি নির্দিষ্ট নিয়ম অনুসারে ডেটা যাচাই করা।

ডেটা অ্যানোটেশন এর মাধ্যমে Model Validation করার জন্য পদক্ষেপ

  1. Model ক্লাসে ডেটা অ্যানোটেশন অ্যাট্রিবিউট ব্যবহার করা: প্রথমে আপনাকে আপনার Model ক্লাসে ডেটা অ্যানোটেশন অ্যাট্রিবিউট যোগ করতে হবে। এই অ্যাট্রিবিউটগুলি ইনপুট যাচাই করার জন্য কাজ করবে।
  2. Controller এ Model Validation চেক করা: তারপর, Controller এর মধ্যে ModelState.IsValid প্রোপার্টি ব্যবহার করে মডেল ভ্যালিডেশন চেক করা হবে।
  3. View-এ Validation Error দেখানো: অবশেষে, View-এ Validation Error ব্যবহারকারীকে দেখানোর জন্য আপনার Razor View-এ প্রপার কোড যুক্ত করতে হবে।

উদাহরণ

ধরা যাক, আমরা একটি Person মডেল তৈরি করছি, যার মধ্যে নাম, বয়স এবং ইমেল অ্যাড্রেস চেক করা হবে। এখানে ডেটা অ্যানোটেশন ব্যবহার করা হয়েছে।

1. Model ক্লাসে ডেটা অ্যানোটেশন যুক্ত করা

using System.ComponentModel.DataAnnotations;

public class Person
{
    [Required(ErrorMessage = "নাম অবশ্যই প্রদান করতে হবে")]
    [StringLength(100, ErrorMessage = "নামটি ১০০ অক্ষরের মধ্যে হতে হবে")]
    public string Name { get; set; }

    [Range(18, 100, ErrorMessage = "বয়স ১৮ থেকে ১০০ এর মধ্যে হতে হবে")]
    public int Age { get; set; }

    [Required(ErrorMessage = "ইমেল ঠিকানা প্রদান করতে হবে")]
    [EmailAddress(ErrorMessage = "একটি বৈধ ইমেল ঠিকানা প্রদান করুন")]
    public string Email { get; set; }
}

এখানে:

  • Required: ফিল্ডটি পূর্ণ করতে হবে।
  • StringLength: একটি স্ট্রিং-এর দৈর্ঘ্য সীমাবদ্ধ করা (এখানে ১০০ অক্ষরের মধ্যে থাকতে হবে)।
  • Range: বয়সের জন্য ১৮ থেকে ১০০ এর মধ্যে হতে হবে।
  • EmailAddress: একটি বৈধ ইমেল ঠিকানা যাচাই করা।

2. Controller এ Model Validation চেক করা

using Microsoft.AspNetCore.Mvc;

public class PersonController : Controller
{
    [HttpPost]
    public IActionResult Create(Person person)
    {
        // Model Validation চেক করা
        if (ModelState.IsValid)
        {
            // যদি Model Valid হয়, ডেটা প্রক্রিয়া করুন (ডেটাবেসে সেভ করুন)
            return RedirectToAction("Index");
        }

        // যদি Model Invalid হয়, ফর্মটি আবার ভ্যালিডেশনসহ রেন্ডার করুন
        return View(person);
    }
}

এখানে, ModelState.IsValid ব্যবহার করে মডেলটি যাচাই করা হয়। যদি মডেলটি ভ্যালিড হয়, তাহলে রিডাইরেক্ট করা হবে, অন্যথায় View-এ Error বার্তা দেখানো হবে।

3. Razor View-এ Validation Error দেখানো

@model Person

<form asp-action="Create" method="post">
    <div>
        <label for="Name">নাম</label>
        <input type="text" id="Name" name="Name" value="@Model.Name" />
        <span asp-validation-for="Name" class="text-danger"></span>
    </div>

    <div>
        <label for="Age">বয়স</label>
        <input type="number" id="Age" name="Age" value="@Model.Age" />
        <span asp-validation-for="Age" class="text-danger"></span>
    </div>

    <div>
        <label for="Email">ইমেল</label>
        <input type="email" id="Email" name="Email" value="@Model.Email" />
        <span asp-validation-for="Email" class="text-danger"></span>
    </div>

    <button type="submit">সাবমিট</button>
</form>

@section Scripts {
    <partial name="_ValidationScriptsPartial" />
}

এখানে:

  • asp-validation-for="Name", asp-validation-for="Age", এবং asp-validation-for="Email" ব্যবহার করে আমরা সংশ্লিষ্ট ফিল্ডের জন্য Validation Error দেখাতে পারি।
  • _ValidationScriptsPartial রেন্ডার করার মাধ্যমে JavaScript Validation স্ক্রিপ্ট ব্যবহার করা হচ্ছে।

ডেটা অ্যানোটেশন ব্যবহার করে কাস্টম ভ্যালিডেশন তৈরি করা

ASP.NET Core ডেটা অ্যানোটেশন দ্বারা Custom Validation তৈরি করা যায়, যা কিছু নির্দিষ্ট লজিক অনুসারে ইনপুট যাচাই করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, আমরা একটি কাস্টম ভ্যালিডেশন তৈরি করব যা একজন ব্যক্তির বয়স ১৮ বছরের কম হলে অনুমোদন করবে না।

কাস্টম ভ্যালিডেশন তৈরি করা

public class AgeValidation : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        var age = (int)value;
        return age >= 18;
    }
}

কাস্টম ভ্যালিডেশন মডেল ক্লাসে ব্যবহার করা

public class Person
{
    [Required(ErrorMessage = "নাম অবশ্যই প্রদান করতে হবে")]
    public string Name { get; set; }

    [AgeValidation(ErrorMessage = "বয়স ১৮ বছরের কম হতে পারবে না")]
    public int Age { get; set; }

    [Required(ErrorMessage = "ইমেল ঠিকানা প্রদান করতে হবে")]
    [EmailAddress(ErrorMessage = "একটি বৈধ ইমেল ঠিকানা প্রদান করুন")]
    public string Email { get; set; }
}

এখানে, AgeValidation কাস্টম অ্যাট্রিবিউট ব্যবহার করা হয়েছে, যা বয়স ১৮ বছরের কম হলে ভুল দেখাবে।


সারাংশ

ASP.NET Core-এ ডেটা অ্যানোটেশন ব্যবহার করে মডেল ভ্যালিডেশন একটি শক্তিশালী পদ্ধতি যা ইনপুট যাচাই করার জন্য খুবই কার্যকর। ডেটা অ্যানোটেশন সন্নিবেশ করার মাধ্যমে আপনি সহজেই বিভিন্ন ধরনের ভ্যালিডেশন চেক (যেমন Required, StringLength, Range, ইত্যাদি) করতে পারেন। এছাড়া, আপনি কাস্টম ভ্যালিডেশন তৈরি করে নিজের শর্তানুযায়ী ইনপুট যাচাই করতে পারেন, যা অ্যাপ্লিকেশনের নিরাপত্তা এবং পারফরম্যান্সের জন্য অত্যন্ত গুরুত্বপূর্ণ।

common.content_added_by

Custom Validation তৈরি করা

203
203

ASP.NET Core-এ ডেটা ভ্যালিডেশনের জন্য সাধারণত Data Annotations ব্যবহার করা হয়। তবে কখনও কখনও ডিফল্ট ভ্যালিডেশন যথেষ্ট না হলে, ডেভেলপাররা কাস্টম ভ্যালিডেশন তৈরি করতে পারেন। কাস্টম ভ্যালিডেশন আপনাকে আপনার নির্দিষ্ট লজিকের ভিত্তিতে ডেটা যাচাই করার সুযোগ দেয়।


Custom Validation তৈরি করার ধাপ

১. কাস্টম ভ্যালিডেশন অ্যাট্রিবিউট তৈরি করা

আপনার ভ্যালিডেশন লজিক তৈরির জন্য একটি ক্লাস তৈরি করুন, যা ValidationAttribute থেকে ইনহেরিট করবে। উদাহরণস্বরূপ, নিচে একটি কাস্টম ভ্যালিডেশন দেখানো হলো, যা চেক করে যে একটি নাম অক্ষর দিয়ে শুরু হচ্ছে কিনা:

using System.ComponentModel.DataAnnotations;

public class StartsWithLetterAttribute : ValidationAttribute
{
    private readonly char _letter;

    public StartsWithLetterAttribute(char letter)
    {
        _letter = letter;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if (value is string stringValue && !stringValue.StartsWith(_letter))
        {
            return new ValidationResult($"The field must start with the letter '{_letter}'.");
        }

        return ValidationResult.Success;
    }
}

২. মডেল ক্লাসে অ্যাট্রিবিউট প্রয়োগ করা

মডেল ক্লাসে আপনার তৈরি করা কাস্টম ভ্যালিডেশন অ্যাট্রিবিউট ব্যবহার করুন।

public class Product
{
    public int Id { get; set; }

    [StartsWithLetter('P')]
    public string Name { get; set; }

    public decimal Price { get; set; }
}

৩. Controller-এ মডেলের ডেটা যাচাই করা

Controller-এ মডেলের ডেটা যাচাই করা হয় এবং ত্রুটি পাওয়া গেলে তা ব্যবহারকারীর কাছে দেখানো হয়।

public class ProductsController : Controller
{
    [HttpPost]
    public IActionResult Create(Product product)
    {
        if (ModelState.IsValid)
        {
            // মডেলটি সঠিক, ডেটা সেভ করুন
            return RedirectToAction("Index");
        }

        // মডেলে ত্রুটি আছে, ভিউতে ফিরে যান
        return View(product);
    }
}

Custom Validation ব্যবহার করার পদ্ধতি

১. সিঙ্ক্রোনাস কাস্টম ভ্যালিডেশন

আপনার ভ্যালিডেশন সিঙ্ক্রোনাস (সাধারণ পদ্ধতিতে) তৈরি করলে তা মডেলের ডেটা সাবমিটের সময়ই যাচাই হবে। এটি উপরের উদাহরণে দেখানো হয়েছে।

২. অ্যাসিঙ্ক্রোনাস কাস্টম ভ্যালিডেশন

কখনও কখনও ভ্যালিডেশন অ্যাসিঙ্ক্রোনাস হতে পারে, যেমন ডাটাবেস থেকে ডেটা যাচাই করা। এর জন্য IValidatableObject ইন্টারফেস ব্যবহার করা যায়।

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;

public class Product : IValidatableObject
{
    public int Id { get; set; }
    public string Name { get; set; }

    public async Task<IEnumerable<ValidationResult>> ValidateAsync(ValidationContext validationContext)
    {
        var validationResults = new List<ValidationResult>();

        if (Name.Length < 5)
        {
            validationResults.Add(new ValidationResult("Name must be at least 5 characters long."));
        }

        return validationResults;
    }
}

Custom Validation মেসেজ কাস্টমাইজ করা

আপনার ভ্যালিডেশন মেসেজ কাস্টমাইজ করতে ErrorMessage প্রপার্টি ব্যবহার করুন:

[StartsWithLetter('P', ErrorMessage = "The name must start with the letter 'P'.")]
public string Name { get; set; }

Custom Validation ত্রুটি ভিউতে দেখানো

ASP.NET Core ভ্যালিডেশন ত্রুটি প্রদর্শনের জন্য ModelState এবং Tag Helpers ব্যবহার করে। উদাহরণ:

<form asp-action="Create">
    <div>
        <label asp-for="Name"></label>
        <input asp-for="Name" />
        <span asp-validation-for="Name" class="text-danger"></span>
    </div>
    <button type="submit">Submit</button>
</form>

ভ্যালিডেশন ত্রুটি প্রদর্শনের জন্য Validation Summary ব্যবহার করতে পারেন:

<div asp-validation-summary="All" class="text-danger"></div>

Custom Validation এর সুবিধা

  • নিয়ন্ত্রিত ভ্যালিডেশন: নির্দিষ্ট লজিক বা প্রয়োজনীয়তা অনুযায়ী ডেটা যাচাই করা যায়।
  • পুনঃব্যবহারযোগ্যতা: একবার তৈরি করলে এটি সহজেই অন্যান্য মডেলে ব্যবহার করা যায়।
  • কোডের সাদৃশ্য: ভ্যালিডেশন লজিক Controller বা View-এর পরিবর্তে Model লেভেলে থাকে।

Custom Validation ASP.NET Core অ্যাপ্লিকেশনে ডেটা যাচাই করার জন্য একটি শক্তিশালী টুল। এটি ডেভেলপারদের নির্দিষ্ট লজিক বাস্তবায়ন করার সুযোগ দেয় এবং অ্যাপ্লিকেশনকে আরও কার্যকর এবং ব্যবহারকারীবান্ধব করে তোলে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion